package object;
/**
 * 演示重写object中equals的意义
 */
public class EqualDemo {
    public static void main(String[] args) {
        String s1 = new String("hello");
        String s2 = new String("hello");
        //String类重写的equals()来比较字符串内容是否相同
        System.out.println(s1.equals(s2));

        StringBuilder builder1 = new StringBuilder("hello");
        StringBuilder builder2 = new StringBuilder("hello");
        // StringBuilder类没有重写equals()，因此调用的Object类的equals()比较的是地址
        System.out.println(builder1.equals(builder2));

        //s1与builder1的类型不同，所以equals()一定是false
        System.out.println(s1.equals(builder1));


         /*
         调用Object的equals()，内部还是使用==比较地址，没有参考意义
         若想比较对象的属性值是否相同，我们认为Object的equals()并不能满足需求
         因此常常重写equals()来比较属性值
         */

        /*
        Point p1 = new Point(100, 200);
        Point p2 = new Point(100, 200);
        System.out.println(p1==p2);//false ==比较的是地址
        //因为Point类重写了equals()方法
        //所以此处调用的是重写之后的equals()，比较的是属性的值是否相同
        System.out.println(p1.equals(p2));

         */

    }
}